#Defining probablity mass function
XX<- 1:10
#Assigning probabilities to the pmf
PP<- c(0.01,0.12,0.13,0.14,0.2,0.2,0.1,0.05,0.04,0.01)
#checking if sum p(x) equals 1
sum(PP)
#graphs
require(graphics)
par(mfrow =c(2,1))
#pmf  plots
plot(XX,PP,type="h",col=2,main="Pmf list",xlab="x",ylab="p(x)")
points(XX,PP,col=2);abline(h=0,col=3)
#cumulative probability distribution (cdf)
QQ<-cumsum(PP)
#printing obtained values
c(XX, PP, QQ)
#plotting cdf
plot(c(1,XX),c(0,QQ),type="s", ylab="F(x)",col=2,xlab="x",main="Cdf for user defined dist.")
abline(h=0:1,col=4)

##TASK 2
XX<- 0:10
#binomial distribution with n= 10,p = 0.6
pbinom(XX, size =10,prob =0.6)
dbinom(XX, size =10,prob =0.6)
#poisson distribution with lambda = 6,n=10, p=0.6
ppois(XX, lambda = 6)
dpois(XX, lambda = 6)

##sampling distribution 
#Exponential distribution
M <- 1000
n <- 16
XSamples <- matrix(rep(0,n*M),M,n)
#generating random sample from matrix rows
for(j in 1:M)
{
XSamples[j , ]<- rexp(n, rate =0.1)
}
#sample mean of each sample (row)
Xbars<-apply(XSamples, 1, mean)
#sampling distribution as the histogram
hist(Xbars, nclass=30, freq=F, main="Sampling Distribution of Xbar when n=16")
#addding ‘an approximated’ density curve to the histogram
dens<-density(Xbars)
lines(dens$x, dens$y, col=2)
#summary statistics
mean(Xbars)
var(Xbars)
sd(Xbars)
summary(Xbars)


##sampling distribution 
#Exponential distribution
M <- 1000
n <- 32
XSamples <- matrix(rep(0,n*M),M,n)
#generating random sample from matrix rows
for(j in 1:M)
{
XSamples[j , ]<- rexp(n, rate =1)
}
#sample mean of each sample (row)
Xbars<-apply(XSamples, 1, mean)
#sampling distribution as the histogram
hist(Xbars, nclass=30, freq=F, main="Sampling Distribution of Xbar when n=32")
#addding ‘an approximated’ density curve to the histogram
dens<-density(Xbars)
lines(dens$x, dens$y, col=2)
#summary statistics
mean(Xbars)
var(Xbars)
sd(Xbars)
summary(Xbars)



#Normal distribution
M <- 1000
n <- 16
XSamples <- matrix(rep(0,n*M),M,n)
#generating random sample from matrix rows
for(j in 1:M)
{
XSamples[j , ]<- rnorm(n, mean = 20, sd =1)
}
#sample mean of each sample (row)
Xbars<-apply(XSamples, 1, mean)
#sampling distribution as the histogram
hist(Xbars, nclass=30, freq=F, main="Sampling Distribution of Xbar when n=32")
#addding ‘an approximated’ density curve to the histogram
dens<-density(Xbars)
lines(dens$x, dens$y, col=2)
#summary statistics
mean(Xbars)
var(Xbars)
sd(Xbars)
summary(Xbars)


